package co.baiku.boot.im.tencent.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;

/**
 * 消息元素 TIMMsgElement
 * <p>
 * 自定义消息元素
 * </p>
 */
@JsonTypeName(value = "TIMCustomElem")
public class TencentMsgCustomElem implements TencentMsgContent {
    /**
     * 自定义消息数据。 不作为 APNs 的 payload 字段下发，故从 payload 中无法获取 Data 字段。
     */
    @JsonProperty("Data")
    private String data;
    /**
     * 自定义消息描述信息；当接收方为 iOS 或 Android 后台在线时，做离线推送文本展示。
     */
    @JsonProperty("Desc")
    private String desc;
    /**
     * 扩展字段；当接收方为 iOS 系统且应用处在后台时，此字段作为 APNs 请求包 Payloads 中的 ext 键值下发，Ext 的协议格式由业务方确定，APNs 只做透传。
     */
    @JsonProperty("Ext")
    private String ext;
    /**
     * 自定义 APNs 推送铃音。
     */
    @JsonProperty("Sound")
    private String sound;

    public TencentMsgCustomElem() {
    }

    public TencentMsgCustomElem(String desc, String data, String ext, String sound) {
        this.desc = desc;
        this.ext = ext;
        this.sound = sound;
        this.data = data;
    }

    public static TencentMsgCustomElem of(String desc, String data, String ext, String sound) {
        return new TencentMsgCustomElem(desc, data, ext, sound);
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getExt() {
        return ext;
    }

    public void setExt(String ext) {
        this.ext = ext;
    }

    public String getSound() {
        return sound;
    }

    public void setSound(String sound) {
        this.sound = sound;
    }
}
